package com.tedu.api.io;

import java.io.Serializable;
import java.util.Arrays;

/**
 *  Person.java类
 *
 *  IO--高级流---针对传对象
 *  Person.java对象具备如下功能：
 *  1.实现序列化接口    Serializable序列化接口--提供：功能
 *  序列化接口：Person.java--JDK中虚拟机---转成Person.class【字节码文件】
 *  对象转换成二进制---序列化接口实现
 *  2.静态常量值：对象输入流---对象输出流
 * InvalidClassException   类的版本号转换异常
 * 原因：序列化或者反序列化操作，传输类---指定版本号---一旦改了person类会
 * 【自动重新生成一个版本】
 * serialVersionUID=3882646975644678005//name、say
 * serialVersionUID=4512839810389990867//name、say、age属性
 *
 *
 * 练习：1.对象输入流、对象输出流--实现为标准流
 * 2.Person 对象  实现Serializable 删掉，测试对象输出流是否正常转化
 */
  public class Person implements Serializable {
  /**
   * 版本号：决定反序列化是否成功【字节文件转换为对象】 唯一标识
   * 类实现Serializable接口，具备序列化功能，类自动生成版本号
   * 建议：重写版本号
   * 每次增加代码或者减少代码，同一版本号，读入【反序列化成功】
   * 实现程序升级降级操作
   * JavaBean:Java豆子--按照规范编写实体类
   */
  private static final long serialVersionUID=1L;
  private  String name;//私有属性
  private String[] say;
  public int age;
  //空参构造器
  public Person() {

  }

  public Person(String name,String[] say) {
    this.name = name;
    this.say = say;
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public String[] getSay() {
    return say;
  }

  public void setSay(String[] say) {
    this.say = say;
  }

  //重写：Object toString() 打印对象地址值  对象名@ERD2
  //重写目的：不想看地址值，看对象属性值
  public String toString() {
    return "Person{" +
            "name='" + name + '\'' +
            ", say=" + Arrays.toString(say) +
            '}';
  }
}
